package terrenos;

import afinidades.Montanyero;
import java.lang.reflect.Field;
import unidades.UnidadHT;

/**
 * Terreno que representa una montaña
 *
 * @author Hasier Rodriguez
 */
public class Montanya extends Terreno {

    public Montanya() {
        super(-3);
    }

    public int getBonificacion(UnidadHT unidad) {
        try {
            Class<?> c = Class.forName(unidad.getAfinidad());
            if (Montanyero.class.isAssignableFrom(c)) {
                Field f = c.getDeclaredField("multiplicador");
                double mult = f.getDouble(c);
                return (int) (unidad.DEFENSA * mult);
            } else {
                return unidad.DEFENSA;
            }
        } catch (ClassNotFoundException ex) {
            return unidad.DEFENSA;
        } catch (NoSuchFieldException ex) {
            return unidad.DEFENSA;
        } catch (IllegalAccessException ex) {
            return unidad.DEFENSA;
        }
    }
//    public static void main(String[] args) {
//        Unidad u = new Unidad(100, 10, 3, 2, 0, 15) {
//
//            @Override
//            public String getAfinidad() {
//                return "afinidades.MontanyeroAvanzado";
//            }
//        };
//        Terreno m = new Montanya();
//        System.out.println("Defensa normal: " + u.DEFENSA + " Defensa bonificada: " + m.getBonificacion(u));
//    }
}
